home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / HTMLEditorKit$InsertHTMLTextAction.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  4.6 KB  |  154 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.event.ActionEvent;
  4. import java.io.IOException;
  5. import javax.swing.JEditorPane;
  6. import javax.swing.text.AbstractDocument;
  7. import javax.swing.text.BadLocationException;
  8. import javax.swing.text.DefaultStyledDocument;
  9. import javax.swing.text.Element;
  10. import javax.swing.text.JTextComponent;
  11. import javax.swing.text.StyledEditorKit;
  12.  
  13. public class HTMLEditorKit$InsertHTMLTextAction extends HTMLEditorKit.HTMLTextAction {
  14.    protected String html;
  15.    protected HTML.Tag parentTag;
  16.    protected HTML.Tag addTag;
  17.    protected HTML.Tag alternateParentTag;
  18.    protected HTML.Tag alternateAddTag;
  19.    boolean adjustSelection;
  20.  
  21.    public HTMLEditorKit$InsertHTMLTextAction(String var1, String var2, HTML.Tag var3, HTML.Tag var4) {
  22.       this(var1, var2, var3, var4, (HTML.Tag)null, (HTML.Tag)null);
  23.    }
  24.  
  25.    public HTMLEditorKit$InsertHTMLTextAction(String var1, String var2, HTML.Tag var3, HTML.Tag var4, HTML.Tag var5, HTML.Tag var6) {
  26.       this(var1, var2, var3, var4, var5, var6, true);
  27.    }
  28.  
  29.    HTMLEditorKit$InsertHTMLTextAction(String var1, String var2, HTML.Tag var3, HTML.Tag var4, HTML.Tag var5, HTML.Tag var6, boolean var7) {
  30.       super(var1);
  31.       this.html = var2;
  32.       this.parentTag = var3;
  33.       this.addTag = var4;
  34.       this.alternateParentTag = var5;
  35.       this.alternateAddTag = var6;
  36.       this.adjustSelection = var7;
  37.    }
  38.  
  39.    public void actionPerformed(ActionEvent var1) {
  40.       JEditorPane var2 = ((StyledEditorKit.StyledTextAction)this).getEditor(var1);
  41.       if (var2 != null) {
  42.          HTMLDocument var3 = ((HTMLEditorKit.HTMLTextAction)this).getHTMLDocument(var2);
  43.          int var4 = ((JTextComponent)var2).getSelectionStart();
  44.          int var5 = ((AbstractDocument)var3).getLength();
  45.          boolean var6;
  46.          if (!this.insertIntoTag(var2, var3, var4, this.parentTag, this.addTag) && this.alternateParentTag != null) {
  47.             var6 = this.insertIntoTag(var2, var3, var4, this.alternateParentTag, this.alternateAddTag);
  48.          } else {
  49.             var6 = true;
  50.          }
  51.  
  52.          if (this.adjustSelection && var6) {
  53.             this.adjustSelection(var2, var3, var4, var5);
  54.          }
  55.       }
  56.  
  57.    }
  58.  
  59.    void adjustSelection(JEditorPane var1, HTMLDocument var2, int var3, int var4) {
  60.       int var5 = ((AbstractDocument)var2).getLength();
  61.       if (var5 != var4 && var3 < var5) {
  62.          if (var3 > 0) {
  63.             String var6;
  64.             try {
  65.                var6 = ((AbstractDocument)var2).getText(var3 - 1, 1);
  66.             } catch (BadLocationException var7) {
  67.                var6 = null;
  68.             }
  69.  
  70.             if (var6 != null && var6.length() > 0 && var6.charAt(0) == '\n') {
  71.                ((JTextComponent)var1).select(var3, var3);
  72.             } else {
  73.                ((JTextComponent)var1).select(var3 + 1, var3 + 1);
  74.             }
  75.          } else {
  76.             ((JTextComponent)var1).select(1, 1);
  77.          }
  78.       }
  79.  
  80.    }
  81.  
  82.    protected void insertAtBoundry(JEditorPane var1, HTMLDocument var2, int var3, Element var4, String var5, HTML.Tag var6, HTML.Tag var7) {
  83.       boolean var10 = var3 == 0;
  84.       Element var9;
  85.       if (var3 <= 0 && var4 != null) {
  86.          var9 = var4;
  87.       } else {
  88.          Element var8;
  89.          for(var8 = ((DefaultStyledDocument)var2).getDefaultRootElement(); var8 != null && var8.getStartOffset() != var3 && !var8.isLeaf(); var8 = var8.getElement(var8.getElementIndex(var3))) {
  90.          }
  91.  
  92.          var9 = var8 != null ? var8.getParentElement() : null;
  93.       }
  94.  
  95.       if (var9 != null) {
  96.          int var11 = 0;
  97.          int var12 = 0;
  98.          if (var10 && var4 != null) {
  99.             for(Element var16 = var9; var16 != null && !var16.isLeaf(); ++var11) {
  100.                var16 = var16.getElement(var16.getElementIndex(var3));
  101.             }
  102.          } else {
  103.             Element var14 = var9;
  104.             --var3;
  105.  
  106.             while(var14 != null && !var14.isLeaf()) {
  107.                var14 = var14.getElement(var14.getElementIndex(var3));
  108.                ++var11;
  109.             }
  110.  
  111.             var14 = var9;
  112.             ++var3;
  113.  
  114.             while(var14 != null && var14 != var4) {
  115.                var14 = var14.getElement(var14.getElementIndex(var3));
  116.                ++var12;
  117.             }
  118.          }
  119.  
  120.          var11 = Math.max(0, var11 - 1);
  121.          this.insertHTML(var1, var2, var3, var5, var11, var12, var7);
  122.       }
  123.  
  124.    }
  125.  
  126.    protected void insertHTML(JEditorPane var1, HTMLDocument var2, int var3, String var4, int var5, int var6, HTML.Tag var7) {
  127.       try {
  128.          ((HTMLEditorKit.HTMLTextAction)this).getHTMLEditorKit(var1).insertHTML(var2, var3, var4, var5, var6, var7);
  129.       } catch (IOException var9) {
  130.          throw new RuntimeException("Unable to insert: " + var9);
  131.       } catch (BadLocationException var10) {
  132.          throw new RuntimeException("Unable to insert: " + var10);
  133.       }
  134.    }
  135.  
  136.    boolean insertIntoTag(JEditorPane var1, HTMLDocument var2, int var3, HTML.Tag var4, HTML.Tag var5) {
  137.       Element var6 = ((HTMLEditorKit.HTMLTextAction)this).findElementMatchingTag(var2, var3, var4);
  138.       if (var6 != null && var6.getStartOffset() == var3) {
  139.          this.insertAtBoundry(var1, var2, var3, var6, this.html, var4, var5);
  140.          return true;
  141.       } else {
  142.          if (var3 > 0) {
  143.             int var7 = ((HTMLEditorKit.HTMLTextAction)this).elementCountToTag(var2, var3 - 1, var4);
  144.             if (var7 != -1) {
  145.                this.insertHTML(var1, var2, var3, this.html, var7, 0, var5);
  146.                return true;
  147.             }
  148.          }
  149.  
  150.          return false;
  151.       }
  152.    }
  153. }
  154.